Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are designed to organize and store information. For example, entity-relationship systems may be used to define entities and the relationships between the entities. The relationships may indicate dependencies or inheritances between the entities. Thus, when operations are performed on one entity, other entities may be directly affected as a result of their relationships with the entity. Like most software systems, entity-relationship systems need to be upgraded over time. These upgrades typically involve creating a separate instance of all of the entities and then copying the state information from the old instance to the new instance. Such copying is problematic for large amounts of information.